package com.ftg.learn.chapter03.manyarray;

import java.util.Arrays;

/**
 * @author 布衣
 */
public class CircleMove {

    /**
     * 优化一下  (。。。。)
     * @param arr
     * @param num
     */
    public static void circle(int[][] arr, int num) {

        int n = num % 4;
        switch (n) {
            case 1:
                int[] newArr = new int[3];
                newArr[0] = arr[2][0];
                newArr[1] = arr[1][0];
                newArr[2] = arr[0][0];
                arr[2][0] = 0;
                arr[1][0] = 0;
                arr[0][0] = 0;
                arr[0] = newArr;
                break;
            case 2:
                int temp = arr[0][2];
                arr[0][2] = arr[2][0];
                arr[2][0] = temp;
                temp = arr[1][2];
                arr[1][2] = arr[1][0];
                arr[1][0] = temp;
                temp = arr[2][2];
                arr[2][2] = arr[0][0];
                arr[0][0] = temp;
                break;
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.println(Arrays.toString(arr[i]));
        }
    }

    public static void main(String[] args) {
        int[][] arr = new int[][]{
                {1, 0, 0},
                {2, 0, 0},
                {3, 0, 0}
        };

        circle(arr,2);
//        int[] newArr = new int[3];
//        newArr[0] = arr[2][0];
//        newArr[1] = arr[1][0];
//        newArr[2] = arr[0][0];
//        arr[0] = newArr;

//        arr[0][2] = arr[2][0];
//        arr[1][2] = arr[1][0];
//        arr[2][2] = arr[0][0];


//        arr[2][2] = arr[2][0];
//        arr[2][1] = arr[1][0];
//        arr[2][0] = arr[0][0];
//
//
//        for (int i = 0; i < arr.length; i++) {
//            System.out.println(Arrays.toString(arr[i]));
//        }

        // 3 2 1
//         0 0 0
//         0 0 0

        //20 10 00 
        //00 01 02
        //02 12 22
        //

        int num = 2;


//        int[][] arr = new int[][]{
//                {1, 4, 7},
//                {2, 5, 8},
//                {3, 6, 9}
//        };
//        for (int i = 0; i < arr.length; i++) {
//            System.out.println(Arrays.toString(arr[i]));
//        }
//        System.out.println("正向转两次");
//        //正向转  一次  (i.i1)->(length-1-i.i)
//        //  (0. 0)->(0. 2)  (0. 1)->(1. 2)  (0. 2)->(2. 2)
//        //  (1. 0)->(0. 1)  (1. 1)->(1. 1)  (1. 2)->(2. 1)
//        //  (2. 0)->(0. 0)  (2. 1)->(1. 0)  (2. 2)->(2. 0)
//        //正向转 两次(转三次等于逆向转一次)
//        //    1  4  7      3  2  1     9  6  3
//        //    2  5  8      6  5  4     8  5  2
//        //    3  6  9      9  8  7     7  4  1
//        //  逆向转   (i.i1)->(i1.length-1-i)（转两次等于正向转两次，转三次等于正向转一次）
//        //  (0. 0)->(2. 0)  (0. 1)->(1. 0)  (0. 2)->(0. 0)
//        //  (1. 0)->(2. 1)
//        //    1  4  7      7 8 9
//        //    2  5  8      4 5 6
//        //    3  6  9      1 2 3
//
//        int[][] arr2 = new int[arr.length][arr[0].length];
//        //转两次
//        for (int i = 0; i < arr2.length; i++) {
//            for (int i1 = 0; i1 < arr2[0].length; i1++) {
//                arr2[i][i1] = arr[arr.length - i - 1][arr[0].length - i1 - 1];
//            }
//        }
//        int[][] arr3 = new int[arr.length][arr[0].length];
//        for (int i = 0; i < arr2.length; i++) {
//            System.out.println(Arrays.toString(arr2[i]));
//        }
//        System.out.println("正向转一次");
//        //正向转一次
//        for (int i = 0; i < arr3.length; i++) {
//            for (int i1 = 0; i1 < arr3[0].length; i1++) {
//                arr3[i][i1] = arr[arr.length - i1 - 1][i];
//            }
//        }
//        for (int i = 0; i < arr3.length; i++) {
//            System.out.println(Arrays.toString(arr3[i]));
//        }
//        System.out.println("逆向转一次");
//        int[][] arr4 = new int[arr.length][arr[0].length];
//        //逆向转一次
//        for (int i = 0; i < arr4.length; i++) {
//            for (int i1 = 0; i1 < arr4[0].length; i1++) {
//                arr4[i][i1] = arr[i1][arr4[0].length - i - 1];
//            }
//        }
//        for (int i = 0; i < arr4.length; i++) {
//            System.out.println(Arrays.toString(arr4[i]));
//        }
//

    }
    // 遍历矩阵的每一行
//        for (int i = 0; i < matrix.length >>> 1; i++) {
//        // 遍历矩阵的每一列
//        for (int j = 0; j < matrix[i].length + 1 >>> 1; j++) {
//            // 临时变量，用于存储当前元素的值
//            int a;
//            a = matrix[i][j];
//            // 将当前元素的值赋给右下角的元素
//            matrix[i][j] = matrix[matrix.length - j - 1][i];
//            // 将右下角的元素的值赋给左下角的元素
//            matrix[matrix.length - j - 1][i] = matrix[matrix.length - i - 1][matrix.length - j - 1];
//            // 将左下角的元素的值赋给右上角的元素
//            matrix[matrix.length - i - 1][matrix.length - j - 1] = matrix[j][matrix.length - i - 1];
//            // 将右上角的元素的值赋给当前元素
//            matrix[j][matrix.length - i - 1] = a;
//        }
//    }

}
